home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / dev / lang / amigatalk.lha / system / TrackDisk.st < prev    next >
Text File  |  2002-03-15  |  3KB  |  117 lines

  1. " -------------------------------------------------------------------- "
  2. " TrackDisk Class allows the user low-level (device) access to any     "
  3. " floppy drives attached to their system (DF0: through DF3:).          "
  4. ""
  5. "  WARNING:  You should know what you're doing to the Amiga OS before  "
  6. "            messing with this Class, or any other System Class!       "
  7. " ---------------------------------------------------------------------"
  8. " The following methods are commented out, because turnMotorOff 
  9.   hangs up my system (JTS).
  10. |
  11.   turnMotorOn 
  12.     ^ <primitive 229 17 private>     
  13. |
  14.   turnMotorOff 
  15.     ^ <primitive 229 18 private>   
  16. "
  17. " ---------------------------------------------------------------------"
  18.  
  19. Class TrackDisk :Device ! private diskName trkNumber !
  20. [
  21.   ejectDisk      "Won't do anything for most Amigas!"
  22.     ^ <primitive 229 16 private>
  23. |
  24.   formatTrack: trackNumber data: theDataBytes
  25.     "DANGER! DANGER, Will Robinson!"
  26.     trkNumber <- trackNumber.
  27.     ^ <primitive 229 19 theDataBytes trackNumber private>
  28. |
  29.   readRawData: trackNumber
  30.     trkNumber <- trackNumber.
  31.     ^ <primitive 229 20 trackNumber private>
  32. |
  33.   writeRawData: rawDataBytes track: trackNumber
  34.     trkNumber <- trackNumber.
  35.     ^ <primitive 229 21 rawDataBytes trackNumber private>.
  36. |
  37.   clearReadBuffer
  38.     <primitive 229 4 private>      
  39. |
  40.   setSyncType: newSyncType
  41.     <primitive 229 5 newSyncType private>
  42. |
  43.   getErrorString
  44.     ^ <primitive 229 8 private> 
  45. |
  46.   getSectorSize
  47.     ^ <primitive 229 12 private>
  48. |
  49.   getTrackSize
  50.     ^ <primitive 229 10 private>
  51. |
  52.   getDeviceType
  53.     ^ <primitive 229 9 private>
  54. |
  55.   getDriveType
  56.     "1 = 3.5in, 2 = 5.25in, 3 = 3.5in spinning at 150 RPM."
  57.     ^ <primitive 229 11 private>
  58. |
  59.   displayDriveType ! type !
  60.     type <- self getDriveType.
  61.     (type == 1)
  62.        ifTrue:  ['3-1/2" Floppy Disk.' print]
  63.        ifFalse: [(type == 2)
  64.                     ifTrue:  ['5-1/4" Floppy Disk.' print]
  65.                     ifFalse: ['3-1/2" Floppy spinning at 150 RPM' print]
  66.                 ]
  67. |
  68.   getNumberOfTracks 
  69.     ^ <primitive 229 13 private>
  70. |
  71.   getTotalSectors 
  72.     ^ <primitive 229 14 private>
  73. |
  74.   getTotalSize ! secsize numsecs !
  75.     numsecs <- self getTotalSectors.
  76.     secsize <- self getSectorSize.
  77.  
  78.     ^ numsecs * secsize
  79. |
  80.   seekTrack: trackNumber 
  81.     trkNumber <- trackNumber.
  82.     ^ <primitive 229 15 trackNumber private>
  83. |
  84.   isDiskPresent 
  85.     ^ <primitive 229 6 private>
  86. |
  87.   isWriteProtected 
  88.     ^ <primitive 229 7 private>
  89. |
  90.   readTrack: trackNumber
  91.     trkNumber <- trackNumber.
  92.     ^ <primitive 229 2 trackNumber private>
  93.     
  94. |
  95.   writeTrack: dataBytesOut track: trackNumber
  96.     trkNumber <- trackNumber.
  97.     ^ <primitive 229 3 dataBytesOut trackNumber private>
  98. |
  99.   displayBytes: byteArray ! size wTitle !
  100.     size   <- self getTrackSize.
  101.     wTitle <- String new.
  102.     wTitle <- 'displayBytes - size = ',(size asString),' Track #: ', (trkNumber asString).
  103.     <primitive 229 22 byteArray wTitle>
  104. |
  105.   new: newDiskName
  106.     private  <- <primitive 229 23 newDiskName>.
  107.     diskName <- newDiskName.
  108.     ^ self
  109. |
  110.   open: newUnitNumber
  111.     <primitive 229 1 newUnitNumber private>
  112. |     
  113.   close
  114.     <primitive 229 0 private>.
  115.     private <- nil             "NO TURNING BACK FROM HERE!"
  116. ]
  117.